/*******************************************************************************
* Copyright (c) 2009, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.ui.tests.progress;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.ui.internal.progress.JobInfo;
import org.eclipse.ui.internal.progress.JobTreeElement;
import org.eclipse.ui.internal.progress.ProgressInfoItem;
import org.eclipse.ui.internal.progress.TaskInfo;
import org.eclipse.ui.progress.IProgressConstants;
/**
* @since 3.6
* @author Prakash G.R.
*
*/
public class ProgressViewTests extends ProgressTestCase {
/**
* @param testName
*/
public ProgressViewTests(String testName) {
super(testName);
}
public void testClearTaskInfo() throws Exception {
// test for
openProgressView();
// run the jobs, hide & show the view
Job job1 = runDummyJob();
Job job2 = runDummyJob();
hideProgressView();
openProgressView();
// now check the items in the view. The job should be listed only once
ProgressInfoItem[] progressInfoItems = progressView.getViewer().getProgressInfoItems();
boolean job1Found = false;
boolean job2Found = false;
for (ProgressInfoItem progressInfoItem : progressInfoItems) {
JobTreeElement info = progressInfoItem.getInfo();
if(info instanceof TaskInfo) {
// if task info then get the parent and check
Object parent = info.getParent();
if(parent instanceof JobInfo) {
JobInfo jobInfo = (JobInfo) parent;
job1Found = checkJob(job1, job1Found, jobInfo);
job2Found = checkJob(job2, job2Found, jobInfo);
}
}else {
JobInfo[] jobInfos = progressInfoItem.getJobInfos();
for (JobInfo jobInfo : jobInfos) {
job1Found = checkJob(job1, job1Found, jobInfo);
job2Found = checkJob(job2, job2Found, jobInfo);
}
}
}
}
protected boolean checkJob(Job job, boolean found, JobInfo jobInfo) {
if(job.equals(jobInfo.getJob())) {
if(found) {
fail("The job is listed twice");
} else {
found = true;
}
}
return found;
}
protected Job runDummyJob() throws InterruptedException {
DummyJob dummyJob = new DummyJob("Dummy Job", Status.OK_STATUS);
dummyJob.setProperty(IProgressConstants.KEEP_PROPERTY, Boolean.TRUE);
dummyJob.schedule();
processEvents();
dummyJob.join();
processEvents();
return dummyJob;
}
}